/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2023-2023. All rights reserved.
 * Description: ffts plus task dispatcher
 * Author: limengjiao
 * Create: 2023-05-01
 */

#ifndef FFTS_COMMON_H
#define FFTS_COMMON_H

#include <vector>
#include <map>
#include "base.h"
#include "runtime/rt.h"

namespace hccl {

using HcclFftsContextsInfo = struct HcclFftsCtxsDef {
    bool completed = false;
    u32 refreshIndex = 0;
    u32 ctxNum = 0;
    std::vector<u32> ignoredSuccessorStart; // 如果流的第一个task为record，则忽略并存入
    std::map<u32, u32> unrelatedSuccessorEnd;
    std::map<u32, u32> unrelatedSuccessorStart;
    std::map<s32, std::vector<u32>> unassignedSuccessorEnd;
    std::map<s32, u32> lastThreadIndex; // 存放每个streamid 最后一个待更新节点
    std::vector<rtFftsPlusComCtx_t> contexts;
    HcclFftsCtxsDef()
    {
        contexts.resize(100); // 100: 默认可存放context个数，可动态扩张
    }
};

}
#endif // !FFTS_COMMON_H